package Copy;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 创建对象的四种方式 :
 * 
 * 1.new 用的最多
 * 
 * 2.反射机制 : 把字符串转换为对应的对象
 * 
 * 3.clone,不再使用
 * 
 * 4.反序列化,替代了clone方法
 * 
 * 概念 :
 * 
 * 1. 对象流，即为以Java对象为传输主体的IO过程。Java对象必须要被序列化后方可进行传输。 
 * 
 * 2. 所谓的对象的序列化就是将对象转换成二进制数据流的一种实现手段，通过将对象序列化，可以方便的实现对象的传输及保存。 
 * 3.要想实现对象的序列化需要实现Serializable接口，但是Serializable接口中没有定义任何的方法，仅仅被用作一种标记，以被编译器作特殊处理。
 * 4. 在Java中提供了ObejctInputStream 和ObjectOutputStream这两个类用于序列化对象的操作。 
 * 
 * 5. 对象的序列化的实现方便了对象间的克隆，使得复制品实体的变化不会引起原对象实体的变化。 
 * 
 * 
 * 序列化 就是把对象保存到硬盘中的过程,让对象在硬盘保存,可以做到对象持久化(就是一直有)
 * 
 * 反序列化 就是把硬盘中的对象,载入到堆内存的过程
 * 
 * @author lenovo
 * @date 2020年7月22日
 */
public class IO_20_ObjectOutputStream {

	public static void main(String[] args) throws FileNotFoundException, IOException {
		User user = new User("张三", 18);
		// 创建 序列化流
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("./src/Copy/user"));
		oos.writeObject(user);
		oos.flush();
		oos.close();
	}

}
